package com.weimob.mcloud.wechatwork.customer.service.user.service;


import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.customer.process.request.*;
import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.customer.process.response.*;
import com.weimob.soa.common.response.SoaResponse;

/**
 * 客户流程相关
 *
 * @author jiawei.you01
 * @date 2022/9/13 13:52
 * @since 1.0
 */
public interface CustomerProcessExport {

    /**
     * 检查流程名称是否合法
     *
     * @param request
     * @return
     */
    SoaResponse<CheckProcessNameLegalResponse, Void> checkName(CheckProcessNameLegalRequest request);

    /**
     * 新增客户流程
     *
     * @param request 新增客户流程实体
     * @return SaveCustomerProcessResponse  包含 流程id
     */
    SoaResponse<SaveCustomerProcessResponse, Void> save(SaveCustomerProcessRequest request);

    /**
     * 修改客户流程
     *
     * @param request 修改客户流程实体
     * @return SaveCustomerProcessResponse  包含 流程id
     */
    SoaResponse<UpdateCustomerProcessResponse, Void> update(UpdateCustomerProcessRequest request);

    /**
     * 修改客户流程状态
     */
    SoaResponse<UpdateProcessStatusResponse, Void> updateProcessStatus(UpdateProcessStatusRequest request);


    /**
     * 获取客户流程列表-基本信息
     */
    SoaResponse<QueryCustomerProcessListResponse, Void> queryList(QueryCustomerProcessListRequest request);

    /**
     * 通过客户流程id获取客户流程详情
     *
     * @param request
     * @return
     */
    SoaResponse<GetSpecifiedCustomerProcessResponse, Void> getSpecified(GetSpecifiedCustomerProcessRequest request);

    /**
     * 查询当前流程包含客户数
     *
     * @param request
     * @return
     */
    SoaResponse<GetCustomerCountByProcessResponse, Void> getCustomerCountByProcess(GetCustomerCountByProcessRequest request);

    /**
     * 查询当前阶段包含的客户总数
     */
    SoaResponse<GetCustomerCountByStageResponse, Void> getCustomerCountByStage(GetCustomerCountByStageRequest request);


    /**
     * 删除客户流程
     */
    SoaResponse<DeleteCustomerProcessResponse, Void> deleted(DeleteCustomerProcessRequest request);


}
